unit VersaoBD;

interface
uses
    dialogs, dateutils, Classes, forms;
    function Versoes(Versao : Integer) : TStringList;
implementation


function Versoes(Versao : Integer) : TStringList;
begin
    Result := TStringList.Create;
    Result.Clear;
    case Versao of
      2:begin
            Result.Add('CREATE GENERATOR CHEQUE_GEN;');
            Result.Add('CREATE TABLE CHEQUE ('+
              'CODCHEQUE D_COD NOT NULL,'+
              'CODTRANSACAO D_COD,'+
              'CODCONTA D_COD,'+
              'NUMEROCHEQUE D_NUMG,'+
              'DATAEMISSAO DATE,'+
              'NOMINAL D_DESCM,'+
              'DATAPREVISTA DATE,'+
              'VALOR D_REAL2);');
            Result.Add('ALTER TABLE CHEQUE ADD PRIMARY KEY (CODCHEQUE);');
            Result.Add('ALTER TABLE CHEQUE ADD FOREIGN KEY (CODCONTA) REFERENCES CONTA(CODCONTA);');
            Result.Add('ALTER TABLE CHEQUE ADD FOREIGN KEY (CODTRANSACAO) REFERENCES TRANSACAO(CODTRANSACAO);');
            Result.Add('CREATE UNIQUE INDEX XPKCHEQUE ON CHEQUE(CODCHEQUE);');
            Result.Add('ALTER TABLE ITEM ALTER COLUMN VALOR TYPE D_REAL2;');
            Result.Add('ALTER TABLE ITEMNOTA ALTER COLUMN QUANTIDADE TYPE D_REAL3;');
            Result.Add('ALTER TABLE NOTA ADD OBS1 D_DESCG;');
            Result.Add('ALTER TABLE COMBOIO ADD DATACHEGADA TIMESTAMP;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 2;');
      end;
      3:begin
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD LOCAL D_DESCM;');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD DATADIG TIMESTAMP;');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD USUARIODIG D_DESCP;');
            Result.Add('CREATE DOMAIN D_TIPO1 AS '+
                'CHAR(1) CHARACTER SET NONE '+
                'COLLATE NONE;');
            Result.Add('ALTER TABLE COMBOIO ADD EXPORTADO D_BOOLEAN;');
            Result.Add('ALTER TABLE COMBOIO ADD COMBOIOCLIENTE D_DESCP;');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD EXPORTADO D_BOOLEAN;');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD ALTINS D_TIPO1;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 3;');
      end;
      4:begin
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD VALORKM D_REAL2;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD KM D_NUMG;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 4;');
        end;
      5:begin
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD TELEMONITORADO D_BOOLEAN;');
            Result.Add('ALTER TABLE PARAMETRO ADD CODTELEMONITORADO D_COD;');
            Result.Add('ALTER TABLE PARAMETRO ADD CODRASTREADO D_COD;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 5;');
        end;
      6:begin
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD PESO D_REAL3;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD QUANTIDADE INTEGER;');
            Result.Add('CREATE TABLE CONTATO ('+
              'CODCONTATO INTEGER NOT NULL,'+
              'CODCIDADE INTEGER NOT NULL,'+
              'NOME VARCHAR(50)  ,'+
              'FONE1 VARCHAR(12)  ,'+
              'FONE2 VARCHAR(12)  ,'+
              'FONE3 VARCHAR(12)  ,'+
              'ENDERECO VARCHAR(50)  );');
            Result.Add('ALTER TABLE CONTATO ADD PRIMARY KEY (CODCONTATO);');
            Result.Add('ALTER TABLE CONTATO ADD FOREIGN KEY (CODCIDADE) REFERENCES CIDADE(CODCIDADE);');
            Result.Add('CREATE GENERATOR CONTATO_GEN;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 6;');
        end;
      7:begin
            Result.Add('ALTER TABLE VEICULO ADD PARADO D_BOOLEAN;');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD CODLOCAL INTEGER;');
            Result.Add('CREATE TABLE LOCAL ('+
              'CODLOCAL D_COD NOT NULL,'+
              'DESCRICAO D_DESCM);');
            Result.Add('ALTER TABLE LOCAL ADD PRIMARY KEY (CODLOCAL);');
            Result.Add('CREATE TABLE VEICULOPARADO ('+
              'CODVEICULOPARADO D_COD NOT NULL,'+
              'CODVEICULO D_COD NOT NULL,'+
              'CODCIDADE D_COD NOT NULL,'+
              'CODLOCAL D_COD NOT NULL,'+
              'CODOCORRENCIA D_COD NOT NULL,'+
              'DATASTOP TIMESTAMP,'+
              'DATASTART TIMESTAMP);');
            Result.Add('ALTER TABLE VEICULOPARADO ADD PRIMARY KEY (CODVEICULOPARADO);');
            Result.Add('ALTER TABLE VEICULOPARADO ADD FOREIGN KEY (CODOCORRENCIA) REFERENCES OCORRENCIA(CODOCORRENCIA);');
            Result.Add('ALTER TABLE VEICULOPARADO ADD FOREIGN KEY (CODVEICULO) REFERENCES VEICULO(CODVEICULO);');
            Result.Add('ALTER TABLE VEICULOPARADO ADD FOREIGN KEY (CODLOCAL) REFERENCES LOCAL(CODLOCAL);');
            Result.Add('ALTER TABLE VEICULOPARADO ADD FOREIGN KEY (CODCIDADE) REFERENCES CIDADE(CODCIDADE);');
            Result.Add('CREATE GENERATOR LOCAL_GEN;');
            Result.Add('CREATE GENERATOR VEICULOPARADO_GEN;');
            Result.Add('CREATE TABLE ANOMALIA ('+
              'CODANOMALIA D_COD NOT NULL,'+
              'CODOCORRENCIA D_COD NOT NULL,'+
              'DATASTART TIMESTAMP,'+
              'DATASTOP TIMESTAMP,'+
              'USUARIOSTART D_DESCM,'+
              'USUARIOSTOP D_DESCM,'+
              'CODVEICULO D_COD,'+
              'ATITUDE VARCHAR(500) CHARACTER SET NONE COLLATE NONE);');
            Result.Add('ALTER TABLE ANOMALIA ADD PRIMARY KEY (CODANOMALIA);');
            Result.Add('ALTER TABLE ANOMALIA ADD FOREIGN KEY (CODVEICULO) REFERENCES VEICULO (CODVEICULO) ;');
            Result.Add('CREATE UNIQUE INDEX XPKANOMALIA ON ANOMALIA (CODANOMALIA);');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD CODVEICULO D_COD;');
            Result.Add('ALTER TABLE PARAMETRO ADD INTERVALOTELEMONITORADO TIME;');
            Result.Add('ALTER TABLE RASTREADOR ADD TELEMONITORADO D_BOOLEAN;');
            Result.Add('CREATE GENERATOR ANOMALIA_GEN;');
            Result.Add('ALTER TABLE CONTATO ALTER FONE1 TYPE D_FONE;');
            Result.Add('ALTER TABLE CONTATO ALTER FONE2 TYPE D_FONE;');
            Result.Add('ALTER TABLE CONTATO ALTER FONE3 TYPE D_FONE;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ALTER QUANTIDADE TYPE D_NUMG;');
            Result.Add('ALTER TABLE CONTATO ALTER NOME TYPE D_DESCM;');
            Result.Add('ALTER TABLE CONTATO ALTER ENDERECO TYPE D_DESCM;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 7;');
        end;
      8:begin
            Result.Add('DECLARE EXTERNAL FUNCTION DATETOSTR '+
                'TIMESTAMP, '+
                'CSTRING(255) CHARACTER SET NONE '+
                'RETURNS CSTRING(255) CHARACTER SET NONE FREE_IT '+
                'ENTRY_POINT '+
                CHR(39)+ 'fn_datetostr' +CHR(39)+
                ' MODULE_NAME '+
                CHR(39)+ 'rfunc' +CHR(39)+ ';');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 8;');
        end;
      9:begin
            Result.Add('CREATE TABLE USUARIOWEB ('+
              'CODUSUARIOWEB D_COD NOT NULL,'+
              'NOME D_DESCP,'+
              'SENHA D_DESCP);');
            Result.Add('ALTER TABLE USUARIOWEB ADD PRIMARY KEY (CODUSUARIOWEB);');
            Result.Add('ALTER TABLE VEICULO ADD CODUSUARIOWEB D_COD;');
            Result.Add('CREATE GENERATOR USUARIOWEB_GEN;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 9;');
        end;
      10:begin
            Result.Add('ALTER TABLE FATURA ADD DATAINICIO DATE;');
            Result.Add('ALTER TABLE FATURA ADD DATAFIM DATE;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 10;');
        end;
      11:begin
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD MCT D_DESCM;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 11;');
        end;
      12:begin
            Result.Add('ALTER TABLE CLIENTE ADD CODUSUARIOWEB D_COD;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 12;');
        end;
      13:begin
            Result.Add('CREATE TABLE MERCADORIA ('+
              'CODMERCADORIA D_COD NOT NULL,'+
              'DESCRICAO D_DESCM);');
            Result.Add('ALTER TABLE MERCADORIA ADD PRIMARY KEY (CODMERCADORIA);');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD CODMERCADORIA INTEGER;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD FOREIGN KEY (CODMERCADORIA) REFERENCES MERCADORIA(CODMERCADORIA);');
            Result.Add('CREATE GENERATOR MERCADORIA_GEN;');
            Result.Add('CREATE UNIQUE INDEX XPKLOCAL ON LOCAL(CODLOCAL);');
            Result.Add('CREATE UNIQUE INDEX XPKMERCADORIA ON MERCADORIA(CODMERCADORIA);');
            Result.Add('CREATE UNIQUE INDEX XPKVEICULOPARADO ON VEICULOPARADO(CODVEICULOPARADO);');
            Result.Add('CREATE UNIQUE INDEX XPKUSUARIOWEB ON USUARIOWEB(CODUSUARIOWEB);');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 13;');
        end;
      14:begin
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD DATAALT TIMESTAMP;');
            Result.Add('ALTER TABLE COMBOIOOCORRENCIA ADD USUARIOALT D_DESCP;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 14;');
         end;
      15:begin
            Result.Add('CREATE INDEX ANOMALIAVEICULO ON ANOMALIA(CODANOMALIA,CODVEICULO,CODOCORRENCIA);');
            Result.Add('CREATE INDEX COMBOIOOCORRENCIA2 ON COMBOIOOCORRENCIA(CODCOMBOIOOCORRENCIA,CODCOMBOIO,CODOCORRENCIA);');
            Result.Add('CREATE UNIQUE INDEX XPKCONTATO ON CONTATO(CODCONTATO);');
            Result.Add('CREATE UNIQUE INDEX PARCELAPAGARNOTA ON PARCELAPAGAR(CODPARCELAPAGAR,CODNOTA);');
            Result.Add('CREATE UNIQUE INDEX XPKRECURSOS ON RECURSOS(NOME,MENUITEM);');
            Result.Add('CREATE UNIQUE INDEX XPKUSUARIO ON USUARIO(NOME);');
            Result.Add('ALTER TABLE VEICULO ADD VALORMENSAL D_REAL2;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 15;');
         end;
      16:begin
            Result.Add('ALTER TABLE CLIENTE ADD SEGURADORA D_DESCP;');
            Result.Add('ALTER TABLE CLIENTE ADD CONTATOSEGURADORA D_DESCM;');
            Result.Add('ALTER TABLE CLIENTE ADD FONESEGURADORA D_FONE;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 16;');
         end;
      17:begin
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD CODMOTORISTA D_COD;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD FOREIGN KEY (CODMOTORISTA) REFERENCES MOTORISTA;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 17;');
         end;
      18:begin
            Result.Add('ALTER TABLE LOCAL ADD DELETADO D_BOOLEAN;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 18;');
         end;
      19:begin
            Result.Add('ALTER TABLE ANOMALIA ADD CODMOTORISTA D_COD;');
            Result.Add('ALTER TABLE VEICULO ADD CODRASTREADOR D_COD;');
            Result.Add('ALTER TABLE VEICULO ADD FOREIGN KEY (CODRASTREADOR) REFERENCES RASTREADOR(CODRASTREADOR);');
            Result.Add('ALTER TABLE ANOMALIA ADD FOREIGN KEY (CODMOTORISTA) REFERENCES MOTORISTA(CODMOTORISTA);');
            Result.Add('ALTER TABLE CLIENTE ADD FOREIGN KEY (CODUSUARIOWEB) REFERENCES USUARIOWEB(CODUSUARIOWEB);');
            Result.Add('ALTER TABLE VEICULO ADD  FOREIGN KEY (CODUSUARIOWEB) REFERENCES USUARIOWEB(CODUSUARIOWEB);');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 19;');
        end;
      20:begin
            Result.Add('ALTER TABLE COMBOIO ADD USUARIODIG D_DESCP;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 20;');
         end;
      21:begin
            Result.Add('ALTER TABLE COMBOIO ADD SITE D_BOOLEAN;');
            Result.Add('ALTER TABLE ANOMALIA ADD ANSO D_BOOLEAN;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 21;');
         end;
      22:begin
            Result.Add('ALTER TABLE COMBOIO ADD ESPECIAL D_BOOLEAN;');
            Result.Add('ALTER TABLE VEICULO ADD PROPRIO D_BOOLEAN;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD CODAJUDANTE D_COD;');
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD FOREIGN KEY (CODAJUDANTE) REFERENCES MOTORISTA(CODMOTORISTA);');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 22;');
         end;
      23:begin
            Result.Add('ALTER TABLE COMBOIOVEICULO ADD CONSULTAMOTORISTA D_DESCP;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 23;');
         end;
      24:begin
            Result.Add('ALTER TABLE VEICULO ADD DATAINCLUSAO DATE;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 24;');
         end;
      25:begin
            Result.Add('ALTER TABLE MOTORISTA ADD CODUSUARIOWEB D_COD;');
            Result.Add('ALTER TABLE MOTORISTA ADD FOREIGN KEY (CODUSUARIOWEB) REFERENCES USUARIOWEB(CODUSUARIOWEB);');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 25;');
         end;
      26:begin
            Result.Add('ALTER TABLE CIDADE ADD LATITUDE D_REAL4;');
            Result.Add('ALTER TABLE CIDADE ADD LONGITUDE D_REAL4;');
            Result.Add('CREATE TABLE EQUIPAMENTO ('+
              'CODEQUIPAMENTO D_COD NOT NULL,'+
              'NUMERO D_DESCM,'+
              'CODRASTREADOR D_COD);');
            Result.Add('ALTER TABLE EQUIPAMENTO ADD PRIMARY KEY (CODEQUIPAMENTO);');
            Result.Add('ALTER TABLE EQUIPAMENTO ADD FOREIGN KEY (CODRASTREADOR) REFERENCES RASTREADOR(CODRASTREADOR);');
            Result.Add('CREATE UNIQUE INDEX XPKEQUIPAMENTO ON EQUIPAMENTO(CODEQUIPAMENTO);');
            Result.Add('CREATE TABLE LOCACAO ('+
              'CODLOCACAO D_COD NOT NULL,'+
              'DATAINSTALACAO TIMESTAMP,'+
              'DATADESINSTALACAO TIMESTAMP,'+
              'DATACHEGHORIGEM TIMESTAMP,'+
              'CODEQUIPAMENTO D_COD,'+
              'CODCOMBOIO D_COD,'+
              'CODCLIENTE D_COD,'+
              'CONTROLETRANSPORTE D_DESCP);');
            Result.Add('ALTER TABLE LOCACAO ADD PRIMARY KEY (CODLOCACAO);');
            Result.Add('ALTER TABLE LOCACAO ADD FOREIGN KEY (CODCLIENTE) REFERENCES CLIENTE(CODCLIENTE);');
            Result.Add('ALTER TABLE LOCACAO ADD FOREIGN KEY (CODCOMBOIO) REFERENCES COMBOIO(CODCOMBOIO);');
            Result.Add('ALTER TABLE LOCACAO ADD FOREIGN KEY (CODEQUIPAMENTO) REFERENCES EQUIPAMENTO(CODEQUIPAMENTO);');
            Result.Add('CREATE UNIQUE INDEX XPKLOCACAO ON LOCACAO(CODLOCACAO);');
            Result.Add('CREATE GENERATOR LOCACAO_GEN;');
            Result.Add('CREATE GENERATOR EQUIPAMENTO_GEN;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 26;');
         end;
      27:begin
            Result.Add('ALTER TABLE FATURA ADD DESCONTO D_REAL3;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 27;');
         end;
      28:begin
            Result.Add('ALTER TABLE LOCACAO ADD CODFATURA D_COD;');
            Result.Add('ALTER TABLE LOCACAO ADD VALORLOCACAO D_REAL2;');
            Result.Add('ALTER TABLE LOCACAO ADD VALORCOMUNICACAO D_REAL2;');
            Result.Add('ALTER TABLE LOCACAO ADD FOREIGN KEY (CODFATURA) REFERENCES FATURA(CODFATURA);');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 28;');
         end;
      29:begin
            Result.Add('ALTER TABLE FATURA ADD DATAVENCIMENTO DATE;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 29;');
         end;
      30:begin
            Result.Add('ALTER TABLE CLIENTE ADD SENHACOMUNICACAO D_DESCP;');
            Result.Add('UPDATE PARAMETRO SET VERSAO = 30;');
         end;
    end;
end;
end.
